package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.*;
import org.springframework.scheduling.annotation.Async;

/**
 * 排课信息Service接口
 * 
 * @author ruoyi
 * @date 2024-01-10
 */
public interface IScClaTimeService 
{
    /**
     * 查询排课信息
     * 
     * @param courseTimeId 排课信息主键
     * @return 排课信息
     */
    public ScClaTime selectScClaTimeByCourseTimeId(Long courseTimeId);

    /**
     * 查询排课信息
     *
     * @param scClaTime 排课信息主键
     * @return 排课信息
     */
    public List<ScClaTimeAttend> selectScClaTimeTeacherIdList(ScClaTime scClaTime);

    public List<ScClaTimeAttend> selectScClaTimeClaIdList(ScClaTime scClaTime);



    /**
     * 查询排课信息列表
     * 
     * @param scClaTime 排课信息
     * @return 排课信息集合
     */
    public List<ScClaTime> selectScClaTimeList(ScClaTime scClaTime);
    /**
     * 查询排课信息列表
     *
     * @param scClaTimeAttend 排课信息
     * @return 排课信息集合
     */
    public List<ScClaTimeAttend> selectScClaTimeList(ScClaTimeAttend scClaTimeAttend);

    /**
     * 新增排课信息
     * 
     * @param scClaTime 排课信息
     * @return 结果
     */
    public int insertScClaTime(ScClaTime scClaTime);

    /**
     * 修改排课信息
     * 
     * @param scClaTime 排课信息
     * @return 结果
     */
    public int updateScClaTime(ScClaTime scClaTime);

    /**
     * 批量删除排课信息
     * 
     * @param courseTimeIds 需要删除的排课信息主键集合
     * @return 结果
     */
    public int deleteScClaTimeByCourseTimeIds(Long[] courseTimeIds);

    /**
     * 删除排课信息信息
     * 
     * @param courseTimeId 排课信息主键
     * @return 结果
     */
    public int deleteScClaTimeByCourseTimeId(Long courseTimeId);

    public AjaxResult searchListForCalendar(ReqSearchClaTime reqSearchClaTime);



    public AjaxResult searchListForLeave(SearchClaTime searchClaTime);

//    @Async("threadPoolTaskExecutor")
    public void searchListForMessageLeave(SysMessage sysMessage);
}
